﻿using System;
using System.Collections.Generic;
using Resn.WhuPub.DML;

namespace Resn.WhuPub.BIL
{
        /// <summary>
        ///定义学校/公司的属性和方法
        /// </summary>
        /// <remarks>
        ///LevelType属性值为本科/高职/高专时，该接口的实例为学校。
        ///学校下属至少1个分校（BranchCoporate），即主校区，主校区名字不能为空。
        ///LevelType属性值为公司时，该接口的实例为公司。
        ///公司下属有且仅有一个分公司（BranchCoporate）。
        ///该分公司为虚拟分公司，名字为空，但其他联系信息等不能为空，作为公司联系信息。
        /// </remarks>
        public interface ICorporate : IEntity
        {
                #region 属性

                #region 基本属性

                /// <summary>
                ///获取学校/公司的名称
                /// </summary>
                /// <value>
                ///学校/公司的名称
                /// </value>
                String Name { get; set; }

                /// <summary>
                ///获取或设置学校/公司的层次
                /// </summary>
                /// <value>
                ///学校/公司的层次
                /// </value>
                CorporateLevel CorporateLevel { get; set; }

                #endregion 基本属性

                /// <summary>
                ///获取学校/公司模型
                /// </summary>
                /// <value>
                ///学校/公司模型
                /// </value>
                CorporateModel Model { get; }

                /// <summary>
                ///获取学校/公司的分校/分公司
                /// </summary>
                /// <value>
                ///学校/公司的分校/分公司
                /// </value>
                List<ICorporateBranch> CorporateBranchs { get; }

                /// <summary>
                ///获取学校/公司的主分校/主公司
                /// </summary>
                /// <value>
                ///学校/公司的主分校/主公司
                ICorporateBranch MainCorporateBranch { get; }

                #endregion 属性

                /// <summary>
                ///创建分校/分公司
                /// </summary>
                /// <param name="name">名称</param>
                /// <param name="address">地址</param>
                /// <param name="Postcode">邮编</param>
                /// <param name="province">省份</param>
                /// <param name="city">城市</param>
                /// <param name="webSite">网址</param>
                /// <returns>
                ///非null:创建成功，返回创建的分校/分公司对象
                ///null：创建失败
                /// </returns>
                ICorporateBranch CreateCorporateBranch(string name, string address = "", string Postcode = "",
                                                       string province = "", string city = "", string webSite = "");
                
        }
}